/* 
 * File:   mmu_asm.h
 * Author: lsboss
 *
 * Created on 13. Dezember 2009, 08:15
 */

#ifndef _MMU_ASM_H
#define	_MMU_ASM_H

#include "pcb.h"

/**
 * Liest aus dem CP15 Control Register
 *
 * @return CP15 Control Register Wert
 */
register_t read_cp15_control_reg();

/**
 * Schreibt Wert in das CP15 Control Register
 */
void write_cp15_control_reg(register_t value);

/**
 * Gibt dem CP15 Control Register die Adresse der Master Page Table
 * bekannt.
 *
 * @param address : Adresse der Master Page Table
 *                  (muss an 16KB ausgerichtet sein)
 */
void write_cp15_ttb_reg(void *address); 

/**
 * Liest das CP15 Domain Control Register
 */
register_t read_cp15_domain_reg();

/**
 * Schreibt Wert in das CP15 Domain Control Register
 */
void write_cp15_domain_reg(register_t value); 

/**
 * TLB Cache wird mitgeteilt, dass virtualle Adresse ungültig ist.
 * TLB wird geflusht und Page Table erneut eingelesen.
 */
void invalidate_data_tlb_at(void *virt_addr);


#endif	/* _MMU_ASM_H */

